This file contains a change history and any other comments that help developers upgrade to the latest version of ASLM. Please see the Release Notes file for more information ASLM 1.1.1.
If you have any questions please AppleLink Garry Hornbuckle, the Apple Shared Library Manager Product Marketing Manager, at HORNBUCKLE1, or you can send him email at Hornbuckle1@applelink.apple.com. Bug reports should be sent to APPLE.BUGS using the Apple Bug Reporter HyperCard stack.
============================
Changes for 1.1.1b1 - 11/2/93
When making a callback to a debugger for a code segment that was just loaded or unloaded, set the current zone to the zone that the code segment is in.
Properly handle exporting classes with pascal member functions.
============================
Changes for 1.1.1a1 - 10/27/93
Symantec changed many things in its 6.0.1 release of Symantec C/C++ that made it no longer work with ASLM 1.1. There are many changes in ASLM 1.1.1a1 to support the 6.0.1 release. All Symantec support is now on the new "ASLM Symantec Support" disk along with a document (about 16 pages) describing what you'll need to do to use Symantec C/C++ 6.0.1 with ASLM 1.1.1.
Moved the "Support for MPW Libraries" disk into the "ASLM Developer Tools" disk, since there is room there now that all the Symantec libraries are on their own disk.
There was a problem with using the INIT(22) resource under System 6 when AppleTalk 55 and earlier was installed. The INIT(22) resource is being replaced by the INIT(19) resource.
In LibraryManagerUtilities.h, the FileSpecType typedef was changed from int to unsigned int so it agrees with the C++ version in LibrarymanagerClasses.h.
Fixed a bug introduced in 1.1.1d1 that caused shared libraries to sometimes not load and give a bogus error code. This only seemed to turn up on 68000 machines, but could have happened on any machine.
Fixed multiple inheritance bug that occurred when the parents of MI classes are not shared(exported) classes.
Make the LibraryBuilder tool handle #if defined(foo) and #if !defined(foo) constructs.
Cleaned up declaration and use of conditional compilation flags (__SC__, powerpc, MAC68k, etc.) in LibraryManager.h.
Changed the typedefs for a number of different procedure pointers to comply with Apple coding conventions. All existing procedure pointers typedefs had "Ptr" appended to them. They include: ProcessProcPtr, HashProcPtr, IsEqualProcPtr, CompareProcPtr, NotifyMethodPtr, and NotifyProcPtr. The previous typedefs still exists for backwards compatibility, but will be removed in future releases, but not 1.1.1GM.
Changed #defines for ASLM errror codes to comply with Apple coding conventions. This meant adding ASLM to all the error codes. For example kOutOfMemory became kASLMOutOfMemory. The previous #defines still exists for backwards compatibility, but will be removed in future releases, but not 1.1.1GM.
Added floatParm, doubleParm, charParm, ucharParm, shortParm, and ushortParm to complement the existing OSErrParm and BooleanParm typedefs. All parameters of type double, float, OSErr, Boolean, char, unsigned char, short or unsigned short should be declared using these typedefs if the routine is a C++ routine, is exported, is not inline, and you want to allow users of Symantec products to use the exported routine. Using these typedefs forces Symantec compilers to pass the 1 and 2 byte parameter types as 4 byte parameters rather than 2 byte parameters.
When a library is being registered and you are using the debug version of ASLM, if there is already an existing library with the same library id, then you will go into MacsBug with an error message indicating that the library is a duplicate. This was done because many people were inadvertently giving more than one library the same library id and then getting kNotFound errors when trying to use a class or function set in the duplicate library. Remember that when more than one shared library has the same library id, only one of the shared libraries ever gets used and the rest are marked as duplicates, even if they do not contain the same classes and function sets.
Changed the Inspector output to indicate if a library is a duplicate or not (you'll see a "***Duplicate"). It also indicates if a class or function set is in a duplicate library.
Fix TClassInfo::Next and FSInfoNext so they never return a class or function set that is in a shared library that has been marked as a duplicate. See above 2 changes for info on duplicate librarys.
Cleanup up the format of the class and library windows in the Inspector.
Fixed bug with System Capability Flags feature. (ie. flags=vmOn,system7 in the Library declaration of the exports file). Basically this feature wasn't working at all for library's registered at boot time.
Added EXPERIMENTAL routines CreateLibraryIterator, CreateLibraryFileIterator, and GetLibraryID per a request. Use at your own risk. They have not been well tested. See LibraryManagerUtilities.h for declarations and more info.
If InitLibraryManager is called a second time (without calling CleanupLibraryManager), go into macsbug with a warning (debug version only) and then return kNoError.
============================
Changes for 1.1.1d3 - 9/8/93
Added experimental support for building model near shared libraries. To use it, compile your sources using model near, and then pass the "-model near" option to BuildSharedLibrary and the "-near" opton to LinkSharedLibrary. if you don't use the "flags=noautoglobals" in the Library declaration in your export file, model near shared libraries automatically have their global worlds setup for them whenever they are entered except when they are entered via a virtual function call. The ASLM team currently has no plans to officially support model near shared libraries. The support was mainly added to try out making the MPW libraries into a shared library (see below).
Added an experimental shared library that contains the implementation of the MPW libraries so that shared libraries can safely calls MPW library routines like sprintf and calloc. See the "MPW Libraries Read Me!" file for details. It's located on the ASLM MPW Libraries Support disk. The ASLM team currently has no plans to officially support the "MPW Library" shared library.
============================
Changes for 1.1.1d2 - 8/31/93
Did some cleaning up of the error codes returned when a library fails to load. They should be more consistent now.
Fixed the problem with not being in the shared library's global world when notifying Jasik's debugger that a code segment was loaded. This should fix the problem of not being able to see a shared library's globals when using Jasik's debugger.
Made the FINALLY macro reraise the exception if one was thrown like it is suppose to (according to the DCE standard).
Added the RAISE macro which can be used instead of Fail if you only want to use the part of ASLM exception handling that is supported by the DCE standard.
Fixed "ASLM Examples:TestTools:TestExceptions.cp" to properly use the exception handling macros.
Fixed a bug in ZeroMem and SLMmemset that caused them not to work with sizes greater than 256k. This also showed up as a bug in other areas such as not being able to create a THashList with more thank 64k hash buckets.
Made TTaskScheduler::ProcessCalled and THashListIterator::SetNextTable protected like they should have been to start with.
Make LibraryManagerClasses.h #includeable from C, although there probably isn't much need for it.
TArrayExample on the Examples disk now calls TArray::IsValid to make sure the TArray objects was created properly.
No longer install the INIT(22) resource for System 7.0 and 7.0.1. It was causing the MacSNMP AppleTalk Transport agent to crash. The only reason for it was to fix the problem of ASLM not loading under System 7.0.1 with tuneup 1.1.1 installed and AppleTalk turned off. Users should either turn AppleTalk on or upgrade to System 7.1 to avoid this problem.
============================
Changes for 1.1.1d1 - 8/9/93
Fixed memory leak that occured when a shared library failed to load because a library that it is dependent on was not available or failed to load.
Added THashList::IsValid and TArray::IsValid. The 1.1 versions of TArray and THashList should have had IsValid because it's possible that the constructors may fail to allocate some needed memory.
Fix the problem with Preflight installing the library file between the System Enabler and the System file rather than before the System Enabler. This only occured on newer machines (the AV machines and later).
Fixed problem with shared libraries failing to unload on PowerPC machines when the new memory manager is running.
Fixed problem with library's using the heap=HOLD option. The memory was never being unheld, plus the library would not fail to load if the memory could not be held.
Fixed a bug that messed up preloading of shared libraries if a preloaded library tried to register a library file or library file folder in its InitProc. This would cause all library's that were suppose to preloaded, but hadn't yet, to never preload. They will now all preload, and so will any library's in library files that end up gettting registered by a preloaded library's InitProc. In other words, you can have preloaded library's in a folder other than the extensions folder and they will still be preloaded as long as they are registered by another shared library's InitProc.
Fixed a bug that caused a crash if you call UnregisterLibraryFile or UnregisterLibraryFileFolder, and you passed true for the forceAll parameter, and this resulted in a library that still had clients being unloaded, and one or more of the clients had called GetLibraryClientData on the library being unloaded.
When calling UnregisterLibraryFile or UnregisterLibraryFileFolder and passing true for forceAll, any Preflights and OpenLibraryFiles that may have been done on any of the library files being that are going away will be "undone".